with order_today as (
    select
         id
         ,customer_order_id
         ,order_source_code
         ,order_source_name
         ,order_type_code
         ,waybill_id
         ,origin_id
         --,origin_code
         --,origin_name
         ,sender_name
         --,sender_company
         --,sender_mobile_phone
         --,sender_telphone
         --,sender_country_id
         --,sender_country_name
         ,sender_province_id
         --,sender_province_name
         ,sender_city_id
         --,sender_city_name
         ,sender_area_id
         --,sender_area_name
         ,sender_township
         ,sender_street
         ,sender_detailed_address
         --,sender_postal_code
         --,sender_email
         ,receiver_name
         --,receiver_company
         --,receiver_mobile_phone
         --,receiver_telphone
         ,destination_id
         --,destination_code
         --,destination_name
         --,receiver_country_id
         --,receiver_country_name
         ,receiver_province_id
         --,receiver_province_name
         ,receiver_city_id
         --,receiver_city_name
         ,receiver_area_id
         --,receiver_area_name
         ,receiver_township
         ,receiver_street
         ,receiver_detailed_address
         --,receiver_postal_code
         --,receiver_email
         --,receiver_sorting_code
         ,terminal_dispatch_code
         ,nullif(split(terminal_dispatch_code, ',')[0], '') AS first_code
         ,nullif(split(terminal_dispatch_code, ',')[1], '') AS second_code
         ,nullif(split(terminal_dispatch_code, ',')[2], '') AS third_code
         --,accurate
         --,remarks
         ,express_type_code
         --,express_type_name
         --,insured
         --,cast(declared_value as decimal(14,2)) as    declared_value
         --,cast(insured_value as decimal(14,2)) as    insured_value
         --,cod_need
         --,cast(cod_money as decimal(14,2))  as    cod_money
         --,cast(cod_fee as decimal(14,2))  as    cod_fee
         --,cod_currency_type_code
         --,cod_currency_type_name
         ,goods_type_code
         ,goods_name
         --,package_number
         --,cast(package_length as decimal(9,2))  as    package_length
         --,cast(package_wide as decimal(9,2))     as    package_wide
         --,cast(package_high as decimal(9,2))     as    package_high
         ,cast(packate_volume as decimal(9,2))     as    packate_volume
         --,cast(package_charge_weight as decimal(9,2))     as    package_charge_weight
         --,cast(package_total_weight as decimal(9,2))     as    package_total_weight
         --,box_standard_id
         --,box_standard_code
         --,box_standard_name
         --,cast(box_price as decimal(14,2))     as    box_price
         --,cast(standard_value as decimal(14,2))     as    standard_value
         --,cast(receivable_freight as decimal(14,2))     as    receivable_freight
         --,cast(discount_freight as decimal(14,2))     as    discount_freight
         ,cast(total_freight as decimal(14,2))     as    total_freight
         --,payment_mode_code
         --,payment_mode_name
         --,paid_mode_id
         --,paid_mode_code
         --,paid_mode_name
         ,customer_code
         ,customer_name
         --,spm_money_type
         --,send_code
         --,send_name
         --,dispatch_code
         --,dispatch_name
         --,dispatch_number
         ,customer_order_time
         ,input_time
         ,order_status_code
         --,cancel_reason
         ,cancel_time
         --,pick_fail_time
         --,pick_fail_reason
         --,prints_number
         --,best_pick_time_start
         --,best_pick_time_end
         --,real_pick_network_id
         ,real_pick_network_code
         --,real_pick_network_name
         ,dispatch_network_time
         --,pick_network_id
         ,pick_network_code
         --,pick_network_name
         --,dispatch_staff_time
         --,pick_staff_code
         --,pick_staff_name
         ,pick_time
         --,last_dispatch_network_id
         --,last_dispatch_network_name
         --,last_dispatch_network_code
         --,last_dispatch_network_time
         --,dispatch_network_reason
         --,last_dispatch_staff_code
         --,last_dispatch_staff_name
         --,last_dispatch_staff_time
         ,assigner_name
         --,assigner_mobile_phone
         --,cast(goods_value as decimal(14,2))     as    goods_value
         --,express_type_id
         --,goods_type_id
         --,payment_mode_id
         --,box_number
         --,member_id
         --,sender_country_code
         --,receiver_country_code
         --,customer_id
         --,update_by
         --,update_by_name
         ,update_time
         --,last_update_time_sync
         ,is_delete
         ,is_plaintext
         --,create_by
         ,create_by_code
         ,create_by_name
         --,back_dispatch_network_number
         --,back_dispatch_network_reason
         --,back_dispatch_network_time
         ,cast (settlement_weight as decimal(14,2)) as settlement_weight
         --,dispatch_network_id
         --,cancel_reason_code
         --,need_dispatch
         --,proxy_area_id
         ,proxy_area_code
         ,proxy_area_name
         --,cancel_explain
         --,dispatch_proxy_area_time
         --,is_real_name
         ,real_name
         --,id_no_type
         --,id_no
         --,sex
         --,exception_msg
         --,inspection_method
         --,package_volume
         ,customer_waybill_no
         --,is_business
         --,print_status_code
         --,second_code_hit_desc
         ,dispatch_network_code
         --,dispatch_network_name
         --,is_can_cancel
         ,sign_receipt
         --,receipt_waybill_no
         --,last_center_code
         --,last_center_name
         --,cast(receipt_freight as decimal(14,2))     as    receipt_freight
         ,is_transfer
         ,phone_contact
         ,is_privacy
          ,goods_type_name
         ,dt --  时间分区
    FROM jms_ods.yl_oms_oms_order
    WHERE dt = '{{ execution_date | cst_ds }}'
),
order_history as(
    select
         id
         ,customer_order_id
         ,order_source_code
         ,order_source_name
         ,order_type_code
         ,waybill_id
         ,origin_id
         --,origin_code
         --,origin_name
         ,sender_name
         --,sender_company
         --,sender_mobile_phone
         --,sender_telphone
         --,sender_country_id
         --,sender_country_name
         ,sender_province_id
         --,sender_province_name
         ,sender_city_id
         --,sender_city_name
         ,sender_area_id
         --,sender_area_name
         ,sender_township
         ,sender_street
         ,sender_detailed_address
         --,sender_postal_code
         --,sender_email
         ,receiver_name
         --,receiver_company
         --,receiver_mobile_phone
         --,receiver_telphone
         ,destination_id
         --,destination_code
         --,destination_name
         --,receiver_country_id
         --,receiver_country_name
         ,receiver_province_id
         --,receiver_province_name
         ,receiver_city_id
         --,receiver_city_name
         ,receiver_area_id
         --,receiver_area_name
         ,receiver_township
         ,receiver_street
         ,receiver_detailed_address
         --,receiver_postal_code
         --,receiver_email
         --,receiver_sorting_code
         ,terminal_dispatch_code
         ,first_code
         ,second_code
         ,third_code
         --,accurate
         --,remarks
         ,express_type_code
         --,express_type_name
         --,insured
         --,declared_value
         --,insured_value
         --,cod_need
         --,cod_money
         --,cod_fee
         --,cod_currency_type_code
         --,cod_currency_type_name
         ,goods_type_code
         ,goods_name
         --,package_number
         --,package_length
         --,package_wide
         --,package_high
         ,packate_volume
         --,package_charge_weight
         --,package_total_weight
         --,box_standard_id
         --,box_standard_code
         --,box_standard_name
         --,box_price
         --,standard_value
         --,receivable_freight
         --,discount_freight
         ,total_freight
         --,payment_mode_code
         --,payment_mode_name
         --,paid_mode_id
         --,paid_mode_code
         --,paid_mode_name
         ,customer_code
         ,customer_name
         --,spm_money_type
         --,send_code
         --,send_name
         --,dispatch_code
         --,dispatch_name
         --,dispatch_number
         ,customer_order_time
         ,input_time
         ,order_status_code
         --,cancel_reason
         ,cancel_time
         --,pick_fail_time
         --,pick_fail_reason
         --,prints_number
         --,best_pick_time_start
         --,best_pick_time_end
         --,real_pick_network_id
         ,real_pick_network_code
         --,real_pick_network_name
         ,dispatch_network_time
         --,pick_network_id
         ,pick_network_code
         --,pick_network_name
         --,dispatch_staff_time
         --,pick_staff_code
         --,pick_staff_name
         ,pick_time
         --,last_dispatch_network_id
         --,last_dispatch_network_name
         --,last_dispatch_network_code
         --,last_dispatch_network_time
         --,dispatch_network_reason
         --,last_dispatch_staff_code
         --,last_dispatch_staff_name
         --,last_dispatch_staff_time
         ,assigner_name
         --,assigner_mobile_phone
         --,goods_value
         --,express_type_id
         --,goods_type_id
         --,payment_mode_id
         --,box_number
         --,member_id
         --,sender_country_code
         --,receiver_country_code
         --,customer_id
         --,update_by
         --,update_by_name
         ,update_time
         --,last_update_time_sync
         ,is_delete
         ,is_plaintext
         --,create_by
         ,create_by_code
         ,create_by_name
         --,back_dispatch_network_number
         --,back_dispatch_network_reason
         --,back_dispatch_network_time
         ,settlement_weight
         --,dispatch_network_id
         --,cancel_reason_code
         --,need_dispatch
         --,proxy_area_id
         ,proxy_area_code
         ,proxy_area_name
         --,cancel_explain
         --,dispatch_proxy_area_time
         --,is_real_name
         ,real_name
         --,id_no_type
         --,id_no
         --,sex
         --,exception_msg
         --,inspection_method
         --,package_volume
         ,customer_waybill_no
         --,is_business
         --,print_status_code
         --,second_code_hit_desc
         ,dispatch_network_code
         --,dispatch_network_name
         --,is_can_cancel
         ,sign_receipt
         --,receipt_waybill_no
         --,last_center_code
         --,last_center_name
         --,receipt_freight
         ,is_transfer
         ,phone_contact
         ,is_privacy
         ,goods_type_name
          ,dt --  时间分区
          from jms_dwd.dwd_yl_oms_oms_order_dt
    where dt BETWEEN date_add('{{ execution_date | cst_ds }}', -31)
    AND date_add('{{ execution_date | cst_ds }}', -1)
),
order_union as (
    select * ,row_number() over (PARTITION BY waybill_id ORDER BY dt DESC) as rnk
    from (
        select * from order_history
        union all
        select * from order_today
    )  order_mid
)

INSERT OVERWRITE TABLE jms_dwd.dwd_yl_oms_oms_order_dt PARTITION (dt)
select
     id
     ,customer_order_id
     ,order_source_code
     ,order_source_name
     ,order_type_code
     ,waybill_id
     ,origin_id
     --,origin_code
     --,origin_name
     ,sender_name
     --,sender_company
     --,sender_mobile_phone
     --,sender_telphone
     --,sender_country_id
     --,sender_country_name
     ,sender_province_id
     --,sender_province_name
     ,sender_city_id
     --,sender_city_name
     ,sender_area_id
     --,sender_area_name
     ,sender_township
     ,sender_street
     ,sender_detailed_address
     --,sender_postal_code
     --,sender_email
     ,receiver_name
     --,receiver_company
     --,receiver_mobile_phone
     --,receiver_telphone
     ,destination_id
     --,destination_code
     --,destination_name
     --,receiver_country_id
     --,receiver_country_name
     ,receiver_province_id
     --,receiver_province_name
     ,receiver_city_id
     --,receiver_city_name
     ,receiver_area_id
     --,receiver_area_name
     ,receiver_township
     ,receiver_street
     ,receiver_detailed_address
     --,receiver_postal_code
     --,receiver_email
     --,receiver_sorting_code
     ,terminal_dispatch_code
     ,first_code
     ,second_code
     ,third_code
     --,accurate
     --,remarks
     ,express_type_code
     --,express_type_name
     --,insured
     --,declared_value
     --,insured_value
     --,cod_need
     --,cod_money
     --,cod_fee
     --,cod_currency_type_code
     --,cod_currency_type_name
     ,goods_type_code
     ,goods_name
     --,package_number
     --,package_length
     --,package_wide
     --,package_high
     ,packate_volume
     --,package_charge_weight
     --,package_total_weight
     --,box_standard_id
     --,box_standard_code
     --,box_standard_name
     --,box_price
     --,standard_value
     --,receivable_freight
     --,discount_freight
     ,total_freight
     --,payment_mode_code
     --,payment_mode_name
     --,paid_mode_id
     --,paid_mode_code
     --,paid_mode_name
     ,customer_code
     ,customer_name
     --,spm_money_type
     --,send_code
     --,send_name
     --,dispatch_code
     --,dispatch_name
     --,dispatch_number
     ,customer_order_time
     ,input_time
     ,order_status_code
     --,cancel_reason
     ,cancel_time
     --,pick_fail_time
     --,pick_fail_reason
     --,prints_number
     --,best_pick_time_start
     --,best_pick_time_end
     --,real_pick_network_id
     ,real_pick_network_code
     --,real_pick_network_name
     ,dispatch_network_time
     --,pick_network_id
     ,pick_network_code
     --,pick_network_name
     --,dispatch_staff_time
     --,pick_staff_code
     --,pick_staff_name
     ,pick_time
     --,last_dispatch_network_id
     --,last_dispatch_network_name
     --,last_dispatch_network_code
     --,last_dispatch_network_time
     --,dispatch_network_reason
     --,last_dispatch_staff_code
     --,last_dispatch_staff_name
     --,last_dispatch_staff_time
     ,assigner_name
     --,assigner_mobile_phone
     --,goods_value
     --,express_type_id
     --,goods_type_id
     --,payment_mode_id
     --,box_number
     --,member_id
     --,sender_country_code
     --,receiver_country_code
     --,customer_id
     --,update_by
     --,update_by_name
     ,update_time
     --,last_update_time_sync
     ,is_delete
     ,is_plaintext
     --,create_by
     ,create_by_code
     ,create_by_name
     --,back_dispatch_network_number
     --,back_dispatch_network_reason
     --,back_dispatch_network_time
     ,settlement_weight
     --,dispatch_network_id
     --,cancel_reason_code
     --,need_dispatch
     --,proxy_area_id
     ,proxy_area_code
     ,proxy_area_name
     --,cancel_explain
     --,dispatch_proxy_area_time
     --,is_real_name
     ,real_name
     --,id_no_type
     --,id_no
     --,sex
     --,exception_msg
     --,inspection_method
     --,package_volume
     ,customer_waybill_no
     --,is_business
     --,print_status_code
     --,second_code_hit_desc
     ,dispatch_network_code
     --,dispatch_network_name
     --,is_can_cancel
     ,sign_receipt
     --,receipt_waybill_no
     --,last_center_code
     --,last_center_name
     --,receipt_freight
     ,is_transfer
     ,phone_contact
     ,is_privacy
      ,goods_type_name
     ,dt --  时间分区
FROM order_union
WHERE rnk = 1
distribute by dt, abs(hash(id)) % 36 ;